home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / gg / ncurses-5.3.lha / ncurses-5.3 / panel / p_new.c < prev    next >
C/C++ Source or Header  |  2002-10-24  |  4KB  |  105 lines

  1. /****************************************************************************
  2.  * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
  3.  *                                                                          *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a  *
  5.  * copy of this software and associated documentation files (the            *
  6.  * "Software"), to deal in the Software without restriction, including      *
  7.  * without limitation the rights to use, copy, modify, merge, publish,      *
  8.  * distribute, distribute with modifications, sublicense, and/or sell       *
  9.  * copies of the Software, and to permit persons to whom the Software is    *
  10.  * furnished to do so, subject to the following conditions:                 *
  11.  *                                                                          *
  12.  * The above copyright notice and this permission notice shall be included  *
  13.  * in all copies or substantial portions of the Software.                   *
  14.  *                                                                          *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
  16.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
  17.  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
  18.  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
  19.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
  20.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
  21.  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
  22.  *                                                                          *
  23.  * Except as contained in this notice, the name(s) of the above copyright   *
  24.  * holders shall not be used in advertising or otherwise to promote the     *
  25.  * sale, use or other dealings in this Software without prior written       *
  26.  * authorization.                                                           *
  27.  ****************************************************************************/
  28.  
  29. /****************************************************************************
  30.  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995                    *
  31.  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  32.  ****************************************************************************/
  33.  
  34. /* p_new.c
  35.  * Creation of a new panel 
  36.  */
  37. #include "panel.priv.h"
  38.  
  39. MODULE_ID("$Id: p_new.c,v 1.6 2000/12/10 02:20:44 tom Exp $")
  40.  
  41. #ifdef TRACE
  42. static char* stdscr_id;
  43. static char* new_id;
  44. #endif
  45.  
  46. /*+-------------------------------------------------------------------------
  47.   Get root (i.e. stdscr's) panel.
  48.   Establish the pseudo panel for stdscr if necessary.
  49. --------------------------------------------------------------------------*/
  50. static PANEL*
  51. root_panel(void)
  52. {
  53.   if(_nc_stdscr_pseudo_panel == (PANEL*)0)
  54.     {
  55.       
  56.       assert(stdscr && !_nc_bottom_panel && !_nc_top_panel);
  57.       _nc_stdscr_pseudo_panel = (PANEL*)malloc(sizeof(PANEL));
  58.       if (_nc_stdscr_pseudo_panel != 0) {
  59.     PANEL* pan  = _nc_stdscr_pseudo_panel;
  60.     WINDOW* win = stdscr;
  61.     pan->win = win;
  62.     pan->below   = (PANEL*)0;
  63.     pan->above   = (PANEL*)0;
  64. #ifdef TRACE
  65.     if (!stdscr_id)
  66.       stdscr_id = strdup("stdscr");
  67.     pan->user = stdscr_id;
  68. #else
  69.     pan->user = (void*)0;
  70. #endif
  71.     _nc_bottom_panel = _nc_top_panel = pan;
  72.       }
  73.     }
  74.   return _nc_stdscr_pseudo_panel;
  75. }
  76.  
  77. NCURSES_EXPORT(PANEL *)
  78. new_panel (WINDOW *win)
  79. {
  80.   PANEL *pan = (PANEL*)0;
  81.  
  82.   if (!win)
  83.     return(pan);
  84.  
  85.   if (!_nc_stdscr_pseudo_panel)
  86.     (void)root_panel();
  87.   assert(_nc_stdscr_pseudo_panel);
  88.  
  89.   if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
  90.     {
  91.       pan->win = win;
  92.       pan->above = (PANEL *)0;
  93.       pan->below = (PANEL *)0;
  94. #ifdef TRACE
  95.       if (!new_id)
  96.     new_id = strdup("new");
  97.       pan->user = new_id;
  98. #else
  99.       pan->user = (char *)0;
  100. #endif
  101.       (void)show_panel(pan);
  102.     }
  103.   return(pan);
  104. }
  105.